/************************************************************************

								Heroes IV
					  Copyright 2000, The 3DO Company

	------------------------------------------------------------------
  							 script_logical_expression.cpp

	$Header: /heroes4/script_logical_expression.cpp $

	$NoKeywords: $

 ************************************************************************/

#include "precompiled.h"
#pragma warning( disable: 4786 )

#include "script_logical_expression.h"

// -----------------------------------
// -----------------------------------

t_script_binary_logical_expression::t_result 
t_script_binary_logical_expression::evaluate(t_expression_context_hero const& context) const
{
	return do_evaluation (
		get_left_subexpression().evaluate(context),
		get_right_subexpression().evaluate(context));
}

t_script_binary_logical_expression::t_result 
t_script_binary_logical_expression::evaluate(t_expression_context_town const& context) const
{
	return do_evaluation (
		get_left_subexpression().evaluate(context),
		get_right_subexpression().evaluate(context));
}

t_script_binary_logical_expression::t_result 
t_script_binary_logical_expression::evaluate(t_expression_context_object const& context) const
{
	return do_evaluation (
		get_left_subexpression().evaluate(context),
		get_right_subexpression().evaluate(context));
}

t_script_binary_logical_expression::t_result 
t_script_binary_logical_expression::evaluate(t_expression_context_army const& context) const
{
	return do_evaluation (
		get_left_subexpression().evaluate(context),
		get_right_subexpression().evaluate(context));
}

t_script_binary_logical_expression::t_result 
t_script_binary_logical_expression::evaluate(t_expression_context_global const& context) const
{
	return do_evaluation (
		get_left_subexpression().evaluate(context),
		get_right_subexpression().evaluate(context));
}

// -----------------------------------
// -----------------------------------

t_script_expression_or::t_result 
t_script_expression_or::do_evaluation(t_result left, t_result right) const
{
	return left || right;
}

t_script_expression_and::t_result 
t_script_expression_and::do_evaluation(t_result left, t_result right) const
{
	return left && right;
}


// -----------------------------------
// -----------------------------------

t_script_unary_logical_expression::t_result 
t_script_unary_logical_expression::evaluate(t_expression_context_hero const& context) const
{
	return do_evaluation ( get_subexpression().evaluate(context) );
}

t_script_unary_logical_expression::t_result 
t_script_unary_logical_expression::evaluate(t_expression_context_town const& context) const
{
	return do_evaluation ( get_subexpression().evaluate(context) );
}

t_script_unary_logical_expression::t_result 
t_script_unary_logical_expression::evaluate(t_expression_context_object const& context) const
{
	return do_evaluation ( get_subexpression().evaluate(context) );
}

t_script_unary_logical_expression::t_result 
t_script_unary_logical_expression::evaluate(t_expression_context_army const& context) const
{
	return do_evaluation ( get_subexpression().evaluate(context) );
}

t_script_unary_logical_expression::t_result 
t_script_unary_logical_expression::evaluate(t_expression_context_global const& context) const
{
	return do_evaluation ( get_subexpression().evaluate(context) );
}

// -----------------------------------
// -----------------------------------

t_script_expression_not::t_result 
t_script_expression_not::do_evaluation(t_result arg) const
{
	return !arg;
}
